package com.ylyq.ylxx.model.request;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @ClassName EstimateAudienceRequest
 * @Description TODO
 * @Author xiaweichao
 * @Date 2020/7/23 11:32
 * @Version 1.0
 */
@NoArgsConstructor
@Data
@ApiModel(value = "查询受众预估结果的请求参数")
public class EstimateAudienceRequest {
    @ApiModelProperty(value = "广告主ID",required = true)
    private Long advertiser_id;
    @ApiModelProperty(value = "定向人群包列表，内容为人群包id，内容为人群包id")
    private Long[] retargeting_tags_include;
    @ApiModelProperty(value = "排除人群包列表，内容为人群包id，内容为人群包id")
    private Long[] retargeting_tags_exclude;
    @ApiModelProperty(value = "详见【附录-受众性别】\n" +
            "    允许值:\"GENDER_FEMALE\",\"GENDER_MALE\",\"GENDER_UNLIMITED\"")
    private String gender;
    @ApiModelProperty(value = "受众年龄区间, 详见【附录-受众年龄区间】\n" +
            "    允许值:\"AGE_BELOW_18\",\"AGE_BETWEEN_18_23\",\"AGE_BETWEEN_24_30\",\"AGE_BETWEEN_31_40\",\"AGE_BETWEEN_41_49\",\"AGE_ABOVE_50\"")
    private String[] age;
    @ApiModelProperty(value = "受众最低android版本(当推广应用下载Android时选填,其余情况不填), 如果填写，对应的platform参数也要传。详见【附录-受众android版本】\n" +
            "    允许值:\"0.0\",\"2.0\",\"2.1\",\"2.2\",\"2.3\",\"3.0\",\"3.1\",\"3.2\",\"4.0\",\"4.1\",\"4.2\",\"4.3\",\"4.4\",\"4.5\",\"5.0\"")
    private String android_osv;
    @ApiModelProperty(value = "受众最低ios版本(当推广应用下载iOS时选填,其余情况不填), 如果填写，对应的platform参数也要传。详见【附录-受众ios版本】\n" +
            "    允许值:\"0.0\",\"4.0\",\"4.1\",\"4.2\",\"4.3\",\"5.0\",\"5.1\",\"6.0\",\"7.0\",\"7.1\",\"8.0\",\"8.1\",\"8.2\",\"9.0\"")
    private String ios_osv;

    @ApiModelProperty(value = "受众运营商, 详见【附录-受众运营商类型】\n" +
            "    允许值:\"MOBILE\",\"UNICOM\",\"TELCOM\"")
    private String[] carrier;
    @ApiModelProperty(value = "受众网络类型, 详见【附录-受众网络类型】\n" +
            "    允许值:\"WIFI\",\"2G\",\"3G\",\"4G\"")
    private String[] ac;
    @ApiModelProperty(value = "受众手机品牌, 详见【附录-手机品牌】\n" +
            "    允许值:\"APPLE\",\"HUAWEI\",\"XIAOMI\",\"SAMSUNG\",\"OPPO\",\"VIVO\",\"MEIZU\",\"GIONEE\",\"COOLPAD\",\"LENOVO\",\"LETV\",\"ZTE\",\"CHINAMOBILE\",\"HTC\",\"PEPPER\",\"NUBIA\",\"HISENSE\",\"QIKU\",\"TCL\",\"SONY\",\"SMARTISAN\",\"360\",\"ONEPLUS\",\"LG\",\"MOTO\",\"NOKIA\",\"GOOGLE\"\n")
    private String[] device_brand;
    @ApiModelProperty(value = "受众文章分类, 详见【附录-受众文章分类】\n" +
            "    允许值:\"ENTERTAINMENT\",\"SOCIETY\",\"CARS\",\"INTERNATIONAL\",\"HISTORY\",\"SPORTS\",\"HEALTH\",\"MILITARY\",\"EMOTION\",\"FASHION\",\"PARENTING\",\"FINANCE\",\"AMUSEMENT\",\"DIGITAL\",\"EXPLORE\",\"TRAVEL\",\"CONSTELLATION\",\"STORIES\",\"TECHNOLOGY\",\"GOURMET\",\"CULTURE\",\"HOME\",\"MOVIE\",\"PETS\",\"GAMES\",\"WEIGHT_LOSING\",\"FREAK\",\"EDUCATION\",\"ESTATE\",\"SCIENCE\",\"PHOTOGRAPHY\",\"REGIMEN\",\"ESSAY\",\"COLLECTION\",\"ANIMATION\",\"COMICS\",\"TIPS\",\"DESIGN\",\"LOCAL\",\"LAWS\",\"GOVERNMENT\",\"BUSINESS\",\"WORKPLACE\",\"RUMOR_CRACKER\",\"GRADUATES\"\n")
    private String[] article_category;
    @ApiModelProperty(value = "用户首次激活时间, 详见【附录-用户首次激活时间】\n" +
            "    允许值:\"WITH_IN_A_MONTH\",\"ONE_MONTH_2_THREE_MONTH\",\"THREE_MONTH_EAILIER\"")
    private String[] activate_type;
    @ApiModelProperty(value = "受众平台(当推广目的landing_type=APP时,不填,且为保证投放效果,平台类型定向PC与移动端互斥), 详见【附录-受众平台类型】\n" +
            "    允许值:\"ANDROID\",\"IOS\",\"PC\"")
    private String[] platform;
    @ApiModelProperty(value = "地域定向城市或者区县列表(当传递省份ID时,旗下市县ID可省略不传), 详见【附件-city.json】，district传CITY或COUNTY时必填】")
    private Long[] city;
    @ApiModelProperty(value = "地域类型，详见【附录-地域类型】。\n" +
            "    允许值:\"CITY\",\"COUNTY\",\"BUSINESS_DISTRICT\"")
    private String district;
    @ApiModelProperty(value = "商圈ID数组，district传BUSINESS_DISTRICT时必填")
    private Long[] business_ids;

    @ApiModelProperty(value = "受众位置类型，详见【附录-受众位置类型】")
    private String location_type;
    @ApiModelProperty(value = "兴趣分类, 详见【附件-ad_tag.json】")
    private Long[] ad_tag;
    @ApiModelProperty(value = "兴趣关键词, 传入具体的词id，非兴趣词包id，可以通过词包相关接口或者兴趣关键词word2id接口获取词id")
    private Long[] interest_tags;
    @ApiModelProperty(value = "APP行为定向, 详见【附录-APP行为定向类型】\n" +
            "    允许值:\"CATEGORY\",\"APP\",\"NONE\"")
    private String app_behavior_target;
    @ApiModelProperty(value = "APP行为定向,分类集合, 详见【附件-app_category.json】")
    private Long[] app_category;
    @ApiModelProperty(value = "APP行为定向,APP集合")
    private Long[] app_ids;
    @ApiModelProperty(value = "精选流量包，详见【附录-精选流量包】")
    private String superior_popularity_type;
    @ApiModelProperty(value = "定向流量包ID数组")
    private Long[] flow_package;
    @ApiModelProperty(value = "排除流量包ID数组")
    private Long[] exclude_flow_package;

    @ApiModelProperty(value = "包含人群包")
    private CustomActions[] include_custom_actions;
    @ApiModelProperty(value = "排除人群包")
    private CustomActions[] exclude_custom_actions;
    @NoArgsConstructor
    @Data
    @ApiModel(value = "查询受众预估结果的请求参数实体-人群包")
    public static class CustomActions {
        @ApiModelProperty(value = "可选范围:1, 7, 14, 28")
        private Integer days;
        @ApiModelProperty(value = "code候选范围由查询行为人群库接口得到")
        private Integer code;
    }
}
